#include <stdio.h>
#include <stdlib.h>

int un_g_val; // 未初始化数据

int g_val = 10; // 已初始化数据

int main(int argc, char* argv[], char* env[])
{
    printf("test:   %p\n", main); // 正文代码
    printf("init:   %p\n", &g_val); // 已初始化
    printf("uninit: %p\n", &un_g_val); // 未初始化

    char* p1 = (char*)malloc(16);
    char* p2 = (char*)malloc(16);

    printf("heap:   %p\n", p1); // 堆地址
    printf("heap:   %p\n", p2); // 堆地址

    printf("stack:  %p\n", &p1); // 栈地址
    printf("stack:  %p\n", &p2); // 栈地址

    printf("argv:   %p\n", argv[0]);

    return 0;
}
